'use strict';

const Controller = require('egg').Controller;
/**
 * @controller adminOrderController 订单管理-后台管理
 */
class OrderController extends Controller {
   /**  
     * @summary 渲染用户列表
     * @description 渲染用户列表
     * @router get /admin/order 
     * @response 200 user 返回结果。（ 对应 contract 里面的验证属性，下面会提到 。）
     */
    async index() {
        // 结构
        let {
            ctx,
            app
        } = this
        // 查询
        let data = await ctx.page('Order',{},{
            include:[
                {model:app.model.User}
            ]
        })
        // 渲染并返回数据
        await ctx.renderTemplate({
            data: data,
            title: '礼物列表',
            tempType: 'table',
            table: {
               
                columns: [
                    {
                        title: 'ID',
                        key: 'id',
                        width: 60,
                        fixed: 'center'
                    },{
                        title: '订单号',
                        key: 'no',
                        width: 200,
                        fixed: 'center'
                    },
                    {
                        title: '礼物',
                        fixed: 'left',
                        render(item) {
                            let index = item.user.avatar.indexOf('jpg')
                            let image = index !== -1 ? item.item.user.avatar : '/public/assets/img/profiles/avatar-01.jpg'
                            return `
                        <h2 class="table-avatar">
                            <a class="avatar avatar-sm mr-2"><img class="avatar-img rounded-circle bg-light" src="${image}"></a>
                        </h2>`
                        },
                    },
                    {
                        title: '价格',
                        key: 'price',
                        width: 180,
                        fixed: 'center'
                    },{
                        title: '订单状态',
                        width: 180,
                        fixed: 'center',
                        render(item) {
                            const o = {
                                pending:{
                                    text:"未支付",
                                    color:"warning"
                                },
                                success:{
                                    text:"支付成功",
                                    color:"success"
                                },
                                fail:{
                                    text:"支付失败",
                                    color:"danger"
                                }
                            }
                            let v = o[item.status]
                            return `
                            <span class="badge badge-${v.color}">${v.text}</span>
                            `
                        },
                    },
                    {
                        title: '创建时间',
                        key: 'created_time',
                        fixed: 'center',
                        width: 200
                    },
                    {
                        title: "操作",
                        width: 200,
                        fixed: 'center',
                        action: {
                            delete: function (id) {
                                return `/admin/order/delete/${id}`
                            },
                        }
                    }
                ]
            }
        })
    }

     /**  
     * @summary 根据ID删除订单
     * @description 根据ID删除订单
     * * @request id string *id xxx/id
     * @router get /admin/order/delete/:id 
     * @response 200 data 返回结果。（ 对应 contract 里面的验证属性，下面会提到 。）
     */
    async delete() {
        // 结构
        let {
            ctx,
            app
        } = this
        // 获得参数
        ctx.validate({
            id: {
                type: 'int',
                required: true,
                desc: '用户ID'
            }
        })
        // 删除数据
        let id = ctx.params.id
        // 添加cookie
        await app.model.Order.destroy({
            where: {
                id
            }
        })
        ctx.toast('删除成功', 'success')
        // 重定向页面
        ctx.redirect('/admin/order')
    }
}

module.exports = OrderController;
